package com.nameli.SIM.mapper;

import com.nameli.SIM.bean.dto.CheckMajorDTO;
import com.nameli.SIM.bean.entity.MajorInfo;
import com.nameli.SIM.bean.query.MajorInfoQuery;
import com.nameli.SIM.bean.vo.MajorInfoVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @author NAME-L
 * @Description 专业信息Mapper接口
 * @className MaojorDAO
 * @date 2021-10-31 17:39:30
 */
@Mapper
public interface MajorInfoMapper {

    /**
     * 查询专业总数
     * @return count(总数)
     */
    int queryAllCount();

    /**
     * 查询所有专业信息
     * @return list
     */
    List<MajorInfoVO> queryAllmajor();

    /**
     * 更新专业信息
     * @return boolean
     */
    Boolean updateMajorInfo(MajorInfo majorInfo);

    /**
     * 根据条件查询
     * @param majorInfoQuery 查询条件
     * @return list
     */
    List<MajorInfoVO> queryByCondition(MajorInfoQuery majorInfoQuery);

    /**
     * 根据编号查找专业
     * @return MajorInfoVO
     */
    MajorInfo queryOneByMajorNo(String majorNo);

    /**
     * 根据院系编号查找
     * @param facultyNo 院系编号
     * @return List<Map<String, Object>>
     */
    List<Map<String, Object>> queryByFacultyNo(String facultyNo);

    /**
     * 根据院系编号查找数量
     * @param facultyNo 院系编号
     * @return count
     */
    int queryCountByFacultyNo(String facultyNo);

    /**
     * 查找最大的id
     * @return
     */
    int selectMaxId();

    /**
     * 添加专业信息
     * @return
     */
    Boolean insertMajor(MajorInfo majorInfo);


    /**
     * 审核通过后，确认消息
     * @param majorNo 专业id
     * @return boolean
     */
    Boolean updateConfirmCheck(String majorNo , Integer checkStatus);

    /**
     * 审核完成后，修改对应专业信息的状态
     * @param checkMajorDTO
     * @return
     */
    Boolean updateByCheck(CheckMajorDTO checkMajorDTO);

    /**
     * 审核驳回后，将专业信息修改为原有状态
     * @param majorInfo
     * @return
     */
    Boolean updateByReject(MajorInfo majorInfo);
}
